#!/bin/sh

MOD_NAME=pinger
MOD_DAEMON=pingerd
MOD_BIN=/opt/$MOD_NAME/bin
MOD_DATA=/var/data/$MOD_NAME/availability.dat
MOD_BACK=/var/data/$MOD_NAME/availability.backup
MOD_DEFAULTS=/opt/$MOD_NAME/etc/defaults
MOD_SETTINGS=/opt/$MOD_NAME/etc/settings
[ -L "$MOD_SETTINGS" ] && MOD_SETTINGS=`readlink $MOD_SETTINGS`

[ -f "$MOD_SETTINGS" ] || cp $MOD_DEFAULTS $MOD_SETTINGS
[ -x "/sbin/hash_verify" ] && [ ! -f "$MOD_SETTINGS.hash" ] && cp $MOD_DEFAULTS.hash $MOD_SETTINGS.hash

. $MOD_SETTINGS

case "$1" in
  start)
    [ -x "/sbin/hash_verify" ] && ! hash_verify $MOD_SETTINGS && exit 1
    echo -n "Starting module pinger: "
    if [ "$MOD_PINGER_ENABLED" != "1" ]; then
      echo "skipped"
      exit 0
    fi
    if [ -z `find /var/data/pinger -name availability.backup -mmin -1` ]; then
      $MOD_BIN/$MOD_DAEMON &
    else
      mv $MOD_BACK $MOD_DATA
      $MOD_BIN/$MOD_DAEMON -c &
    fi
    RETVAL=$?
    if [ $RETVAL = 0 ]; then echo "done"; else echo "failed"; fi
    exit $RETVAL
    ;;
  stop)
    echo -n "Stopping module pinger: "
    killall $MOD_DAEMON 2> /dev/null
    RETVAL=$?
    mv -f $MOD_DATA $MOD_BACK
    if [ $RETVAL = 0 ]; then echo "done"; else echo "failed"; fi
    exit $RETVAL
    ;;
  restart)
    echo -n "Restarting module pinger: "
    . $MOD_SETTINGS
    killall $MOD_DAEMON 2> /dev/null
    if [ "$MOD_PINGER_ENABLED" != "1" -o "$MOD_PINGER_EXPOSEAVAIL" != "1" ]; then
      rm -f $MOD_DATA
    fi
    if [ "$MOD_PINGER_ENABLED" != "1" ]; then
      echo "skipped"
      exit 0
    fi
    $MOD_BIN/$MOD_DAEMON -c &
    RETVAL=$?
    if [ $RETVAL = 0 ]; then echo "done"; else echo "failed"; fi
    exit $RETVAL
    ;;
  status)
    echo -n "Module $MOD_NAME is "
    killall -0 $MOD_DAEMON 2> /dev/null
    RETVAL=$?
    if [ $RETVAL = 0 ]; then echo "running"; else echo "stopped"; fi
    exit $RETVAL
    ;;
  defaults)
    cp $MOD_DEFAULTS $MOD_SETTINGS 2> /dev/null
    [ -f "$MOD_DEFAULTS.hash" ] && cp $MOD_DEFAULTS.hash $MOD_SETTINGS.hash
    ;;
  *)
    echo "Usage: $0 {start|stop|restart|status|defaults}"
    exit 1
esac
